\documentclass{beamer}
\usetheme{Warsaw}
\title[Version Control Sytems - Git]{ Version control systems \\ Git}
\author{Azhagu Selvan, Karthik Selvakumar}
\institute{Thiagarajar college of Engineering}
\date{May 20, 2010}
\begin{document}

\begin{frame}
\titlepage
\end{frame}


\begin{frame}{Objective}

This presentation aims to explain the Version Control system
in layman's language.
It gives a brief introduction
to Distibuted Version control system and Git.
\end{frame}

\begin{frame}{What is a Version control sytem?}

\begin{block}{Definition}
Version control system is a Time Machine which remembers everything about your past but knows nothing about your future!
\end{block}

\end{frame}


\begin{frame}{Why a Version control sytem is needed?}

\begin{itemize}
\item Because anything in this universe is subjected to change over time, software is no exception.
\item Change is a inherent property of any computer file.
\item Human memory is very poor!
\end{itemize}
\end{frame}

\begin{frame}{Goals of a Version control system}
\begin{block}{Goals}
\begin{itemize}
\item To track changes, go back to history and retrieve past.\\
\item To support seamless collaborative development.\\
\end{itemize}
\end{block}
\end{frame}

\begin{frame}{Types of Version control system}
\begin{block}{Types}
\begin{itemize}
\item Line based or Centralised Version control system.
\item Distributed or De-centralised Version control system.
\end{itemize}
\end{block}
\end{frame}



\begin{frame}{What and What Not?}
\begin{block}{What to expect from a VCS?}
\begin{itemize}
\item Record changes with descriptions.
\item Jump to any previous change and revert changes.
\item Collaborate!
\end{itemize}
\end{block}

\begin{block}{What Not to expect?}
\begin{itemize}
\item A VCS doesn't generate code for you!
\item It can't go to future ;)
\end{itemize}
\end{block}
\end{frame}


\begin{frame}{Line based or Centralised Version control systems}

\begin{center}
   \includegraphics{/home/selva/workspace/presentations/klngtug-vcsgit/cvcs.eps}
\end{center}
\end{frame}



\begin{frame}{Distributed or De-Centralised Version control systems}

\begin{center}
   \includegraphics{/home/selva/workspace/presentations/klngtug-vcsgit/dvcs.eps}
\end{center}
\end{frame}


\begin{frame}{Git - Fast Version control system}

\begin{center}
   \includegraphics{/home/selva/workspace/presentations/klngtug-vcsgit/git.eps}
\end{center}
\end{frame}

\begin{frame}{Git (contd.)}
\begin{itemize}

\item git init-db = initialises the repository

\item git add file1 file2 file3   = adds the files to git repository

\item git commit -a = commits with the next version

\item git status = current status of files and branch name

\item git whatchanged = history of all versions

\item git diff = difference between previous and next version

\end{itemize}
\end{frame}

\begin{frame}{Git (contd.)}
\begin{itemize}

\item git branch branch-name = creates a new branch

\item git branch = lists the all available branches

\item git checkout branch-name = switches to particular branch

\item git merge branch-name = merges with other branch

\item git branch -d branch-name = deletes unwanted branch

\item git clone repo-url = clones a existing project from other url

\item git pull repo-url = gets the changes from other repo

\end{itemize}
\end{frame}

\begin{frame}{References}
\begin{block}{More to Read!}
\begin{itemize}
\item Git - www.kernel.org/pub/software/scm/git/docs/gittutorial.html

\item VCS - http://en.wikipedia.org/wiki/Revision\_control
\end{itemize}
\end{block}
\begin{block}{Thanks to}
Inspired by stylesen's presentation here - \\
http://stylesen.org/files/version\_control\_systems.pdf

\end{block}
\end{frame}

\begin{frame}{Thank You}

\begin{center}
Thank You!
\end{center}
\end{frame}
\end{document}
